home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2007 January, February, March & April
/
Chip-Cover-CD-2007-02.iso
/
Pakiet bezpieczenstwa
/
mini Pentoo LiveCD 2006.1
/
mpentoo-2006.1.iso
/
livecd.squashfs
/
lib
/
rcscripts
/
net.modules.d
/
adsl
next >
Wrap
Text File
|
2006-04-25
|
3KB
|
124 lines
# Copyright (c) 2004-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header$
# Contributed by Roy Marples (uberlord@gentoo.org)
# char* adsl_provides(void)
#
# Returns a string to change module definition for starting up
adsl_provides() {
echo "adsl"
}
# void adsl_depend(void)
#
# Sets up the dependancies for the module
adsl_depend() {
after interface
before dhcp
}
# bool adsl_check_installed(void)
#
# Returns 1 if rp-pppoe is installed, otherwise 0
adsl_check_installed() {
[[ -x /usr/sbin/adsl-start || -x /usr/sbin/pppoe-start ]] && return 0
${1:-false} && eerror "For ADSL support, emerge net-dialup/rp-pppoe"
return 1
}
# bool adsl_check_depends(void)
#
# Checks to see if we have the needed functions
adsl_check_depends() {
local f
for f in interface_variable; do
[[ $( type -t ${f} ) == function ]] && continue
eerror "adsl: missing required function ${f}\n"
return 1
done
return 0
}
# bool adsl_setup_vars(char *iface)
#
# Checks to see if the ADSL script has been created or not
adsl_setup_vars() {
local iface=${1} ifvar=$( interface_variable ${1} ) startstop=${2} cfgexe
if [[ -x /usr/sbin/pppoe-start ]]; then
exe=/usr/sbin/pppoe-${startstop}
cfgexe=pppoe-setup
else
exe=/usr/sbin/adsl-${startstop}
cfgexe=adsl-setup
fi
# Decide which configuration to use. Hopefully there is an
# interface-specific one
cfgfile="/etc/ppp/pppoe-${iface}.conf"
[[ -f ${cfgfile} ]] || cfgfile="/etc/ppp/pppoe.conf"
if [[ ! -f ${cfgfile} ]]; then
eerror "no pppoe.conf file found!"
eerror "Please run ${cfgexe} to create one"
return 1
fi
# Might or might not be set in conf.d/net
eval user=\"\$\{adsl_user_${ifvar}\}\"
[[ -z ${user} ]] && eval user=\"\$\{user_${ifvar}\}\"
return 0
}
# bool adsl_start(char *iface)
#
# Start ADSL on an interface by calling adsl-start
#
# Returns 0 (true) when successful, non-zero otherwise
adsl_start() {
local iface=${1} exe cfgfile user
adsl_setup_vars ${iface} start || return 1
# Start ADSL with the cfgfile, but override ETH and PIDFILE
einfo "Starting ADSL for ${iface}"
${exe} <(cat "${cfgfile}"; \
echo "ETH=${iface}"; \
echo "PIDFILE=/var/run/rp-pppoe-${iface}.pid"; \
[[ -n ${user} ]] && echo "USER=${user}") \
>${devnull}
eend $?
}
# bool adsl_stop(char *iface)
#
# Stop ADSL on an interface by calling adsl-stop
#
# Returns 0 (true) when there appears to be an ADSL interface to stop,
# and we attempted to stop it. This does not necessarily indicate
# that adsl-stop was successful. Returns non-zero when there was
# nothing to stop.
adsl_stop() {
local iface=${1} exe cfgfile user
adsl_check_installed || return 1
[[ ! -f /var/run/rp-pppoe-${iface}.pid ]] && return 1
adsl_setup_vars ${iface} stop || return 1
einfo "Stopping ADSL for ${iface}"
${exe} <(cat "${cfgfile}"; \
echo "ETH=${iface}"; \
echo "PIDFILE=/var/run/rp-pppoe-${iface}.pid"; \
[[ -n ${user} ]] && echo "USER=${user}") \
>${devnull}
eend $?
return 0 # we did *attempt* to stop adsl
}